package linter.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import linter.POJO.DO.Note;
import linter.POJO.DTO.NoteDTO;
import org.springframework.web.multipart.MultipartFile;

/**
* @author 北煜
* @description 针对表【note】的数据库操作Service
* @createDate 2023-07-25 09:30:43
*/
public interface NoteService extends IService<Note> {

    /**
     * @param uuid              用户id
     * @param noteJson       笔记字符串形式
     * @return                  是否返回成功
     */
    Object setNoteForJson(Long uuid, String noteJson, String noteTitle);

    /**
     * @param uuid      用户ID
     * @param noteId    笔记ID
     * @return          返回笔记内容
     */
    Object getNoteByUuid(Long uuid, Long noteId);

    /**
     * @param pageSize 页显示数
     * @param pageNum  页码
     * @param uuid     用户ID
     * @return 无
     */
    PageInfo<NoteDTO> getAllNote(int pageSize, int pageNum, Long uuid);

    /**
     * @param uuid              用户ID
     * @param noteId            笔记ID
     * @return                  返回修改行数
     */
    String updateNoteJsonByUser(Long uuid, Long noteId, String noteJson,String noteTitle);

    /**
     * @param uuid     用户ID
     * @param pageNum 当前页
     * @param pageSize 当前页显示数
     * @return 返回查询到的图片和标题
     */
    PageInfo<Object> setNoteImgAndNoteTitleByUuid(Long uuid, Integer pageNum, Integer pageSize);

    /**
     * @param uuid 用户ID
     * @param pageSize 当前页显示数
     * @param pageNum 当前页
     * @return 数据
     */
    PageInfo<Note> getRecentFiles(Long uuid, int pageSize, int pageNum);

    /**
     * @param noteId 笔记ID
     * @param uuid   用户ID
     * @return 删除成功与否
     */
    String deleteNoteByNoteId(Long noteId, Long uuid);

    /**
     * @param uuid 用户ID
     * @param pageSize 当前页显示数
     * @param pageNum 当前页
     * @return 数据
     */
    PageInfo<NoteDTO> getViewsNote(Long uuid, int pageSize, int pageNum);

    /**
     * @param uuid 用户ID
     * @param file 上传的图片
     * @param noteName 笔记名字
     * @return 返回成功与否
     */
    String createNoteNull(Long uuid, MultipartFile file, String noteName);

    /**
     * @param uuid 用户ID
     * @return 返回pageInfo数据组
     */
    PageInfo<NoteDTO> selNotCollectNote(Long uuid);

    /**
     * @param uuid 用户ID
     * @return 返回查询到的用户使用的课程笔记
     */
    PageInfo<NoteDTO> getNoteClassByUuid(Long uuid);

    /**
     * @param uuid 用户ID
     * @param noteTitle 笔记标题
     * @return 返回查询到课程笔记
     */
    PageInfo<NoteDTO> selNoteClass(Long uuid, String noteTitle);

    /**
     * @param noteId 笔记ID
     * @return 返回笔记内容
     */
    NoteDTO getNoteByNoteId(Integer noteId);
}
